﻿<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>事件说明</title>

    <link href="../css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <h1>
        事件说明</h1>
    <hr />
    <h2>
        事件定义</h2>
    <p>
        事件ID定义，使用 enum 16进制掩码方式进行定义，一共7个位，1-7位只能一个位存在值。每一个位的值是 0,1,2,4,8。 第8位是标识事件组位，可以存在0,1,2,4,8值。一共组成
        5 个事件组。可以和其它1-7位同时存在值。</p>
    <p>
        第8位事件组位，但是只能使用0，1，2，4，这三个值，组成4个事件组，不能使用最后一个数值8，这是FK库保留使用的事件组。</p>
    <table class="auto-style1" style="width: 47%; height: 222px; padding-right: 1px; padding-left: 1px; border-left-color: navajowhite; border-bottom-color: navajowhite; padding-bottom: 1px; margin: 1px; border-top-style: solid; border-top-color: navajowhite; padding-top: 1px; border-right-style: solid; border-left-style: solid; background-color: blanchedalmond; border-right-color: navajowhite; border-bottom-style: solid;">
        <tr>
            <td class="auto-style2" style="width: 193px; background-color: #ffcc66;">
                说明</td>
            <td class="auto-style2" style="background-color: #ffcc66; width: 54px;">
                事件组位</td>
            <td colspan="8" style="background-color: #ffcc66">
                以下7位是事件位</td>
        </tr>
        <tr>
            <td class="auto-style2" style="width: 193px; background-color: #ffcc66;">
                位索引</td>
            <td class="auto-style2" style="background-color: #ffcc66; width: 54px;">
                7</td>
            <td style="background-color: #ffcc66">
                6</td>
            <td style="background-color: #ffcc66">
                5</td>
            <td style="background-color: #ffcc66">
                4</td>
            <td style="background-color: #ffcc66">
                3</td>
            <td style="background-color: #ffcc66">
                2</td>
            <td style="background-color: #ffcc66">
                1</td>
            <td style="background-color: #ffcc66">
                0</td>
            <td style="background-color: #ffcc66;">
            </td>
        </tr>
        <tr>
            <td class="auto-style2" style="width: 193px; background-color: #ffcc66;">
                用户</td>
            <td class="auto-style2" style="width: 54px">
                0</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                4*7=28</td>
        </tr>
        <tr>
            <td class="auto-style2" style="width: 193px; background-color: #ffcc66;">
                用户</td>
            <td class="auto-style2" style="width: 54px">
                1</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                4*7=28</td>
        </tr>
        <tr>
            <td class="auto-style2" style="width: 193px; background-color: #ffcc66;">
                用户</td>
            <td class="auto-style2" style="width: 54px">
                2</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                4*7=28</td>
        </tr>
        <tr>
            <td class="auto-style2" style="width: 193px; background-color: #ffcc66;">
                FK库保留3位用户4位</td>
            <td class="auto-style2" style="width: 54px">
                4</td>
            <td>
                X</td>
            <td>
                X</td>
            <td>
                X</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                F</td>
            <td>
                4*3=12|4*4=16</td>
        </tr>
        <tr>
            <td class="auto-style2" style="width: 193px; background-color: #ffcc66;">
                FK库保留</td>
            <td class="auto-style2" style="width: 54px">
                8</td>
            <td>
                X</td>
            <td>
                X</td>
            <td>
                X</td>
            <td>
                X</td>
            <td>
                X</td>
            <td>
                X</td>
            <td>
                X</td>
            <td>
                4*7=28</td>
        </tr>
    </table>
    <br />
    28+28+28+16=100个用户事件项。应该足够用了。<br />
    28+12=40个FK保留事件项。<br />
    <br />
    <h3>
        定义通报ID实例：</h3>
    <pre>   enum enumNotify
   {
       ON_NOTIFY_1 = 0x00000001,
       ON_NOTIFY_2 = 0x00000010,
       ON_NOTIFY_3 = 0x00000002,
       ON_NOTIFY_4 = 0x10000001,
       ON_NOTIFY_5 = 0x10000002,
       ON_NOTIFY_6 = 0x10000010,
       ON_NOTIFY_7 = 0x20000001,
       ON_NOTIFY_8 = 0x00000011,&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; // 错误，7个位只能一个位存在值。每一个位的值是0,1,2,4,8。
       ON_NOTIFY_9 = 0x80000000,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 错误，不能使用最后一个数值8，这是FK库保留使用的对象事件组。
   }<br />
</pre>
    <strong>下一个版本事件组定义：<br />
    </strong>
    小于等于1.99版本的事件定义28个事件后,会出现错误，小于28个事件能够正常使用。在以后版本中对事件定义方式做一些小改动，事件组位独立为一个单独的数据类型，事件定义方式没有改变。<h2>
            发送事件</h2>
<textarea class="textareaCode" readonly="readOnly" style="height: 397px">
void DoNotify()
{
	fk::LObject::EventObject ne;      // 用户定义通报结构
	fk::LNotify*	pnotify;

	pnotify = GetNotify();
	if (pnotify->NotifyExist(ON_NotifyID))
	{
		ne.ne.pobj		= (fk::LObject*)this;
		ne.ne.uiMsg	= fk::LObject::ON_NotifyID;
		ne.ne.uiCode	= 0;
		ne.ne.bNextRun	= FALSE;
		ne.ne.lResult	= 0;

		NOTIFYBASE_TRUE_FKDBG(ne.ne, L"fk::LObject::ON_NotifyID");

		pnotify->NotifyCall( (fk::LObject*)this, ne.ne.uiMsg, (fk::PNOTIFYEVENT)&ne );
	}
}
</textarea>       
    <p>
        &nbsp;</p>
        <p>
            </p>
            <h2>接收通报</h2>
            <textarea class="textareaCode" readonly="readOnly" style="height: 97px">
            
FK_BEGIN_TARGETPROC(LObject)
//FK_TARGETPROC_EVENT(_pmodules, fk::ON_MESSAGE_ID, OnMessageID(pEvent));
FK_END_TARGETPROC();
</textarea>            
    <h2>
        注册和卸载事件到某个类</h2>
    <p>
        <textarea class="textareaCode" readonly="readOnly" style="height: 489px">

b_call InstallModulesNotify(fk::enumInstallEvent umInstallEvent)
{
    switch(umInstallEvent)
    {
        case fk::umInstallEventInstall: 
        { 
            if (_pmodules->RegsvrNotifyTo( this, fk::LModules::ON_UPDATE| fk::LModules::ON_ADD| fk::LModules::ON_REMOVE ) ) 
            {
                return true; 
            }
        }return false;
        case fk::umInstallEventUninstall:
        {
            _pmodules->UnregsvrNotify(this);
        }return true; 
        default:
        {
            return false;
        }
    }
    return false;
}
    </textarea>
    </p>
    <p>
</p>
    <p>
        事件操作类：</p>
    <p>
        fk::LNotify</p>
    <p>
        &nbsp;</p>
    <p>
        &nbsp;</p>
    <p>
        &nbsp;</p>
</body>
</html>
